With the standard (XEN) prefix and the setting of 8 words per line,
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Tue, 4 Apr 2006 14:06:38 +0000 (15:06 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Tue, 4 Apr 2006 14:06:38 +0000 (15:06 +0100)
stack dumps on i386 came out at 81 characters per line. The change to
xen/arch/x86/traps.c makes this 80 (without changing the look on the
screen), and the change to xen/drivers/char/console.c arranges for
soft line breaks not getting duplicated by hard line breaks, so
displaying 80 characters per line doesn't result in a subsequent blank
line.

From: Jan Beulich

Signed-off-by: Keir Fraser <keir@xensource.com>
xen/arch/x86/traps.c
xen/drivers/char/console.c

index 95e44db6d93a994d73abfbaed5bb54a76c120847..2856f75a0c3b1ba0eb5c80689a979d089efaa359 100644 (file)
@@ -138,13 +138,13 @@ static void show_guest_stack(struct cpu_user_regs *regs)
     if ( vm86_mode(regs) )
     {
         stack = (unsigned long *)((regs->ss << 4) + (regs->esp & 0xffff));
-        printk("Guest stack trace from ss:sp = %04x:%04x (VM86)\n   ",
+        printk("Guest stack trace from ss:sp = %04x:%04x (VM86)\n  ",
                regs->ss, (uint16_t)(regs->esp & 0xffff));
     }
     else
     {
         stack = (unsigned long *)regs->esp;
-        printk("Guest stack trace from "__OP"sp=%p:\n   ", stack);
+        printk("Guest stack trace from "__OP"sp=%p:\n  ", stack);
     }
 
     for ( i = 0; i < (debug_stack_lines*stack_words_per_line); i++ )
@@ -160,8 +160,8 @@ static void show_guest_stack(struct cpu_user_regs *regs)
             break;
         }
         if ( (i != 0) && ((i % stack_words_per_line) == 0) )
-            printk("\n   ");
-        printk("%p ", _p(addr));
+            printk("\n  ");
+        printk(" %p", _p(addr));
         stack++;
     }
     if ( i == 0 )
@@ -257,16 +257,16 @@ void show_stack(struct cpu_user_regs *regs)
     if ( guest_mode(regs) )
         return show_guest_stack(regs);
 
-    printk("Xen stack trace from "__OP"sp=%p:\n   ", stack);
+    printk("Xen stack trace from "__OP"sp=%p:\n  ", stack);
 
     for ( i = 0; i < (debug_stack_lines*stack_words_per_line); i++ )
     {
         if ( ((long)stack & (STACK_SIZE-BYTES_PER_LONG)) == 0 )
             break;
         if ( (i != 0) && ((i % stack_words_per_line) == 0) )
-            printk("\n   ");
+            printk("\n  ");
         addr = *stack++;
-        printk("%p ", _p(addr));
+        printk(" %p", _p(addr));
     }
     if ( i == 0 )
         printk("Stack empty.");
index dc0685700732dedfb499fde511581766d8959afe..2755f5e46b103aafd4a93582b713663df4b12117 100644 (file)
@@ -200,10 +200,11 @@ static void putchar_console(int c)
     }
     else
     {
+        if ( xpos >= COLUMNS )
+            put_newline();
         video[(xpos + ypos * COLUMNS) * 2]     = c & 0xFF;
         video[(xpos + ypos * COLUMNS) * 2 + 1] = ATTRIBUTE;
-        if ( ++xpos >= COLUMNS )
-            put_newline();
+        ++xpos;
     }
 }